package com.example.mybaseapp.ui

import android.content.Context
import android.content.pm.PackageManager
import android.os.Bundle
import android.util.Log
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatTextView
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.mybaseapp.R

class WebViewActivity : AppCompatActivity() {
    private lateinit var webView:WebView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_web_view)
        webView = findViewById<WebView>(R.id.webview).apply {
            webViewClient = object : WebViewClient() {
                override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
                    if (url != null && url.startsWith("baiduboxapp://")) {
                        // Handle custom scheme here
                        return true
                    }
                    return false
                }
            }
            settings.apply {
                // 允许 WebView 执行重定向（自动跳转）
                javaScriptEnabled = true // 先启用 JavaScript
                domStorageEnabled = true  // 如果需要，启用 DOM Storage
            }
            loadUrl("https://www.baidu.com/")
        }
        findViewById<AppCompatTextView>(R.id.tx).apply {
//            text = " 这个版本不是很精确：${getWebViewVersion()}"
        }
        findViewById<AppCompatTextView>(R.id.tx2).apply {
//            text = "这个版本和现实的一样${getSystemWebViewVersion(this@WebViewActivity)}"
        }


        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
    }

    /**
     * 获取系统WebView的版本
     */
   private fun getWebViewVersion(): String {
        // 获取 WebView 的 UserAgent
        val userAgent = webView.settings.userAgentString
        // 使用 UserAgent 提取内核版本信息
        val coreVersion = extractCoreVersionFromUserAgent(userAgent)
        Log.d("Fire", "getWebViewVersion: $coreVersion")
        // 返回内核版本信息
        return coreVersion
    }

    fun extractCoreVersionFromUserAgent(userAgent: String): String {
        // 在 UserAgent 中找到包含内核版本信息的关键字，通常是 "Chrome/" 或 "Version/"
        val coreVersionKeyword = if (userAgent.contains("Chrome/")) "Chrome/" else "Version/"
        // 提取内核版本信息
        val startIndex = userAgent.indexOf(coreVersionKeyword) + coreVersionKeyword.length
        val endIndex = userAgent.indexOf(" ", startIndex)
        return if (endIndex > startIndex) {
            userAgent.substring(startIndex, endIndex)
        } else {
            userAgent.substring(startIndex)
        }
    }

    /**
     * 直接获取webview软件的版本
     */
    private fun getSystemWebViewVersion(context: Context): String {
        // WebView 的 package 名字可能有多个，这里列出了最常见的几个
        val webViewPackages = listOf(
            "com.google.android.webview", // Google WebView
            "com.android.webview", // AOSP WebView
            "org.chromium.webview_shell" // Chromium WebView (较少见)
        )

        val pm = context.packageManager
        webViewPackages.forEach { packageName ->
            try {
                val packageInfo = pm.getPackageInfo(packageName, 0)
                return packageInfo.versionName
            } catch (e: PackageManager.NameNotFoundException) {
                // 如果当前 package 没找到，继续尝试下一个
            }
        }

        // 如果所有已知 WebView 都没有安装，返回 null 或者一些提示信息
        return "null"
    }
}